package com.lupc.negocio;

import java.util.Collection;
import java.util.Date;

import com.lupc.dao.IdeaDAO;
import com.lupc.exception.DAOExcepcion;
import com.lupc.modelo.Idea;
import com.lupc.modelo.Usuario;

public class GestionIdea {

	public Collection<Idea> buscarIdea(String busqueda)
			throws DAOExcepcion {
		IdeaDAO dao = new IdeaDAO();
		return dao.listar();
	}

	public Boolean evaluar(Integer idIdea,String estado,Integer idAsesor) 
			throws DAOExcepcion {
		IdeaDAO dao = new IdeaDAO();
		Boolean resultado = null;
		if (estado.equals("Aprobado")) {
			resultado = dao.evaluarAprobado(idIdea, estado, idAsesor);
		}
		else if(estado.equals("Rechazado")){
			resultado = dao.evaluarRechazado(idIdea, "Creado");
		}
		return resultado;
	}

	public Idea crear(String titulo, String descripcion, String estado, String archivo, Date fecha, String key1, String key2, String key3, String key4)
			throws DAOExcepcion {	
		
		
		IdeaDAO dao = new IdeaDAO();
		Idea ideaEncontrada = dao.obtener(titulo);
		if(ideaEncontrada.getId()!= null && ideaEncontrada.getId()>0) {
			Idea vo = new Idea();
			vo.setTitulo(titulo);
			vo.setDescripcion(descripcion);
			vo.setEstado(estado);
			vo.setArchivo(archivo);
			vo.setFecha(fecha);
			vo.setKey1(key1);
			vo.setKey2(key2);
			vo.setKey3(key3);
			vo.setKey4(key4);
			
			return dao.crear(vo);			
		}
		else{
			throw new DAOExcepcion("Ya una idea con ese titulo");	//mensaje error titulo duplicado		
		}

		
	}

	
	public Idea obtener(String titulo) throws DAOExcepcion {
		IdeaDAO dao = new IdeaDAO();
		return dao.obtener(titulo);
	}

	/*
	public void eliminar(int idCentroInformacion) throws DAOExcepcion {
		IdeaDAO dao = new IdeaDAO();
		dao.eliminar(idCentroInformacion);
	}
 
 */
 
	public Idea modificar(int id, String titulo, String descripcion, String estado, String archivo, String key1, String key2, String key3, String key4) throws DAOExcepcion {
		
		IdeaDAO dao = new IdeaDAO();

		Idea vo = new Idea();
		vo.setTitulo(titulo);
		vo.setDescripcion(descripcion);
		vo.setEstado(estado);
		vo.setArchivo(archivo);
		vo.setKey1(key1);
		vo.setKey2(key2);
		vo.setKey3(key3);
		vo.setKey4(key4);
		
		return dao.modificar(vo);
	}
	
	
	public Idea obtenerAsesor(Integer asesor) throws DAOExcepcion {
		IdeaDAO dao = new IdeaDAO();
		return dao.obtenerAsesor(asesor);
	}

	
	
	public Collection<Idea> listar() throws DAOExcepcion {
		IdeaDAO dao = new IdeaDAO();
		return dao.listar();
	}
	
	public Collection<Idea> listar(String titulo, String estado) throws DAOExcepcion {
		IdeaDAO dao = new IdeaDAO();
		return dao.listar(titulo,estado);
	}

}
